package com.ito.areaTrabajo.control.home;

import org.zkoss.zk.ui.Component;
import org.zkoss.zk.ui.Executions;
import org.zkoss.zk.ui.event.Event;
import org.zkoss.zk.ui.event.EventListener;
import org.zkoss.zk.ui.select.SelectorComposer;
import org.zkoss.zk.ui.select.annotation.Listen;
import org.zkoss.zk.ui.select.annotation.Wire;
import org.zkoss.zul.Messagebox;
import org.zkoss.zul.Textbox;

import com.ito.areaTrabajo.modelo.dao.ProyectoDao;
import com.ito.ito.areaTrabajo.modelo.Gplantillas;
import com.ito.ito.areaTrabajo.modelo.Plantilla;
import com.ito.ito.areaTrabajo.modelo.Proyecto;
import com.ito.ito.areaTrabajo.modelo.Usuario;

public class NuevoProyecto  extends SelectorComposer<Component>{
	/**
	 * 
	 */
	
	private static final long serialVersionUID = 1L;
	
	@Wire
	private Textbox nombreProyecto;
	
	private ProyectoDao dao;
	
	public NuevoProyecto(){
		dao=new ProyectoDao();
	}


	@Listen("onClick=#crearProyecto")
	public void guardarProyecto(){

		//Aqui deben ir las alidaciones para el proyecto
		//Aqui se guarda el proyecto
		crearProyectoNuevo();
		//Se notifica al usuario a travez de este mensaje
		Messagebox.show("El proyecto esta creado", "Proyecto creado", Messagebox.OK, Messagebox.INFORMATION, new EventListener<Event>() {
			@Override
			public void onEvent(Event arg0) throws Exception {
				//Cuando de aceptar (solo tiene una opcion) se redirecciona
				
				//Variable para indicar que se creo un nuevo proyecto
				Executions.getCurrent().getSession().setAttribute("listaPlantillas", 1);
				
				//Redireccion al home del encargado
				Executions.sendRedirect("encargado_home.zul");
				
			}
		});
	}
	private void crearProyectoNuevo(){
		Usuario u=(Usuario)Executions.getCurrent().getSession().getAttribute("usuario");
		
		Proyecto proyecto=new Proyecto();
		proyecto.setNombreProyecto(nombreProyecto.getValue());
		proyecto.getUsuarios().add(u);
		Gplantillas grupoPlantillas=new Gplantillas();
		grupoPlantillas.setNombrePlantilla("GPlantillas"+proyecto.getNombreProyecto());
		
		Plantilla portada=new Plantilla("Portada");
		grupoPlantillas.getPlantillas().add(portada);
		
		
		Plantilla controlVersiones=new Plantilla("ControlVersiones");
//		controlVersiones.setGplantillas(grupoPlantillas);
		grupoPlantillas.getPlantillas().add(controlVersiones);
		
		Plantilla  encabezado =new Plantilla("EncabezadoPie");
//		encabezado.setGplantillas(grupoPlantillas);
		grupoPlantillas.getPlantillas().add(encabezado);
		
		Plantilla docRequerimientos= new Plantilla("DocumentoRequerimientos");
//		docRequerimientos.setGplantillas(grupoPlantillas);
		grupoPlantillas.getPlantillas().add(docRequerimientos);
		
		Plantilla solicitudRequerimientos=new Plantilla("SolicitudRequerimientos");
//		solicitudRequerimientos.setGplantillas(grupoPlantillas);
		grupoPlantillas.getPlantillas().add(solicitudRequerimientos);
		
		
		
		Plantilla matrizTrazabilidad= new Plantilla("MatrizTrazabilidad");
//		matrizTrazabilidad.setGplantillas(grupoPlantillas);
		grupoPlantillas.getPlantillas().add(matrizTrazabilidad);
		
		Plantilla casosPrueba=new Plantilla("CasosPrueba");
//		casosPrueba.setGplantillas(grupoPlantillas);
		grupoPlantillas.getPlantillas().add(casosPrueba);


		Plantilla requerimientosCasosdeUso=new Plantilla("RequerimientosCasoDeUso");
//		requerimientosCasosdeUso.setGplantillas(grupoPlantillas);
		grupoPlantillas.getPlantillas().add(requerimientosCasosdeUso);
		
//		grupoPlantillas.getProyectos().add(proyecto);
		proyecto.setGplantillas(grupoPlantillas);
		System.out.println("numero de proyectos antes="+u.getProyecto().size());
		dao.persist(proyecto);
		System.out.println("numero de proyectos despues="+u.getProyecto().size());
//		UsuarioDao ud=new UsuarioDao();
//		ud.persist(u);
		Executions.getCurrent().getSession().setAttribute("proyectoActual", proyecto);

	}

}

